package cn.hxsteel.model.vo;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 * 分页对象. 包含当前页数据及分页信息如总记录数.
 * 
 */
public class PageVO< T > implements Serializable
{
    
    private static int DEFAULT_PAGE_SIZE = 20;
    
    // 每页的记录数
    private int        pageSize          = DEFAULT_PAGE_SIZE;
    // 当前页第一条数据在List中的位置,从0开始
    private int        pageNo;
    // 当前页中存放的记录,类型一般为List
    private List< T >  data;
    // 总记录数
    private int        pageRecord;
    
    /**
     * 构造方法，只构造空页.
     */
    public PageVO()
    {
	this( 0, 0, DEFAULT_PAGE_SIZE, new ArrayList< T >() );
    }
    
    /**
     * 默认构造方法.
     * 
     * @param pageNo 当前页码
     * @param pageSize 本页容量
     * @param pageRecord 数据库中总记录条数
     * @param data 本页包含的数据
     */
    public PageVO( int pageNo, int pageSize, int pageRecord, List< T > data )
    {
	this.pageSize = pageSize;
	this.pageNo = pageNo;
	this.pageRecord = pageRecord;
	this.data = data;
    }
    
    /**
     * 取每页数据容量.
     */
    public int getPageSize()
    {
	return pageSize;
    }
    
    /**
     * 取当前页中的记录.
     */
    public List< T > getResult()
    {
	return data;
    }
    
    public int getPageNo()
    {
	return pageNo;
    }
    
    /**
     * 取总记录数.
     */
    public int getPageRecord()
    {
	return pageRecord;
    }
    
}